package de.nak.terminumfrageapp.service;

import java.util.List;
import de.nak.terminumfrageapp.dao.UmfrageDAO;
import de.nak.terminumfrageapp.model.Benutzer;
import de.nak.terminumfrageapp.model.Umfrage;

/**
 * @description Service Klasse fuer @link Umfrage.
 * @author Cornelia Kugler, Inga Brinkmann, Tim Danker
 * 
 */

public class UmfrageService implements IUmfrageService {
	/** das Umfrage DAO */
	private UmfrageDAO umfrageDAO;

	public void setUmfrageDAO(UmfrageDAO umfrageDAO) {
		this.umfrageDAO = umfrageDAO;
	}

	/**
	 * @description erstellt eine Umfrage fuer einen Benutzer.
	 * @param Benutzer
	 * @return Umfrage
	 */
	public Umfrage umfrageErstellen(Benutzer benutzer) {

		// neue Umfrage erstellen
		Umfrage umfrage = new Umfrage();
		// Ersteller der Umfrage setzen
		umfrage.setErsteller(benutzer);
		umfrage.setUmfrageInitial(true);
		// Umfrage zu einem Benutzer zuordnen
		benutzer.umfrageZuordnen(umfrage);

		return umfrageDAO.erstellen(umfrage);

	}

	/**
	 * @description speichert eine Umfrage.
	 * @param Umfrage
	 */
	public void speichern(Umfrage umfrage) {
		
		umfrage.setUmfrageInitial(false);
		umfrageDAO.speichern(umfrage);

	}

	/**
	 * @description loescht eine Umfrage.
	 * @param Umfrage
	 */
	public void loeschen(Umfrage umfrage) {

		umfrageDAO.loeschen(umfrage);

	}

	/**
	 * @description laedt eine Liste mit den eigenen Umfragen fuer einen
	 *              Benutzer
	 * @param Benutzer
	 * @return List<Umfrage>
	 */
	@Override
	public List<Umfrage> ladeEigeneUmfragen(Benutzer benutzer) {
		return umfrageDAO.ladeEigeneUmfragen(benutzer);
	}

	/**
	 * @description laedt eine einzelne Umfrage.
	 * @param id
	 * @return Umfrage
	 */
	@Override
	public Umfrage ladeUmfrage(Long id) {
		return umfrageDAO.ladeUmfrage(id);
	}

	/**
	 * @description laedt eine Liste mit allen Umfragen
	 * @return List<Umfrage>
	 */
	@Override
	public List<Umfrage> ladeAlleUmfragen() {
		return umfrageDAO.ladeAlleUmfragen();
	}

}
